{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 利用LightGBM/XGboost实现Happy Customer Bank目标客户（贷款成功的客户）识别\n",
    "    \n",
    "** 任务说明: ** \n",
    "    \n",
    "Happy Customer Bank目标客户识别Happy Customer Bank目标客户识别\n",
    "\n",
    "https://discuss.analyticsvidhya.com/t/hackathon-3-x-predict-customer-worth-for-happy-customer-bank/3802\n",
    "\n",
    "** 文件说明: **\n",
    "\n",
    "Train.csv：训练数据\n",
    "\n",
    "Test.csv：测试数据\n",
    "\n",
    "** 字段说明: **\n",
    "\n",
    "数据集共26个字段: 其中1-24列为输入特征，25-26列为输出特征。\n",
    "    \n",
    "输入特征：\n",
    "    \n",
    "1.\tID - 唯一ID（不能用于预测）\n",
    "2.\tGender - 性别\n",
    "3.\tCity - 城市\n",
    "4.\tMonthly_Income - 月收入（以卢比为单位）\n",
    "5.\tDOB - 出生日期\n",
    "6.\tLead_Creation_Date - 潜在（贷款）创建日期\n",
    "7.\tLoan_Amount_Applied - 贷款申请请求金额（印度卢比，INR）\n",
    "8.\tLoan_Tenure_Applied - 贷款申请期限（单位为年）\n",
    "9.\tExisting_EMI -现有贷款的EMI（EMI：电子货币机构许可证） \n",
    "10.\tEmployer_Name雇主名称\n",
    "11.\tSalary_Account - 薪资帐户银行\n",
    "12.\tMobile_Verified - 是否移动验证（Y / N）\n",
    "13.\tVAR5 - 连续型变量\n",
    "14.\tVAR1-  类别型变量\n",
    "15.\tLoan_Amount_Submitted - 提交的贷款金额（在看到资格后修改和选择）\n",
    "16.\tLoan_Tenure_Submitted - 提交的贷款期限（单位为年，在看到资格后修改和选择）\n",
    "17.\tInterest_Rate - 提交贷款金额的利率\n",
    "18.\tProcessing_Fee - 提交贷款的处理费（INR）\n",
    "19.\tEMI_Loan_Submitted -提交的EMI贷款金额（INR）\n",
    "20.\tFilled_Form - 后期报价后是否已填写申请表格\n",
    "21.\tDevice_Type - 进行申请的设备（浏览器/移动设备）\n",
    "22.\tVar2 - 类别型变量\n",
    "23.\tSource - 类别型变量\n",
    "24.\tVar4 - 类别型变量\n",
    "\n",
    "输出：\n",
    "\n",
    "25.\tLoggedIn - 是否login（只用于理解问题的变量，不能用于预测，测试集中没有）\n",
    "26. Disbursed - 是否发放贷款（目标变量），1为发放贷款（目标客户）\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "** 作业要求：**\n",
    "\n",
    "1.\t适当的特征工程（20分）\n",
    "2.\t用LightGBM完成任务，并用交叉验证对模型的超参数（learning_rate、n_estimators、num_leaves、max_depth、min_data_in_leaf、colsample_bytree、subsample）进行调优。（70分）\n",
    "或者用XGBoost完成任务，并用交叉验证对模型的超参数（learning_rate、n_estimators、max_depth、min_child_weight、colsample_bytree、subsample、reg_lambda、reg_）进行调优。\n",
    "3.\t对最终模型给出特征重要性（10分）\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn import metrics \n",
    "\n",
    "#from sklearn.model_selection\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "dpath = './Datas/'\n",
    "train = pd.read_csv(dpath +\"train_modified_new.csv\", encoding = \"latin1\")\n",
    "\n",
    "y_train = train[\"Disbursed\"]\n",
    "X_train = train.drop([\"ID\", \"Disbursed\"], axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Check results:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def modelfit(alg, X_train, y_train, cv_folds=5, early_stopping_rounds=50):\n",
    "    \n",
    "    xgb_param = alg.get_xgb_params()\n",
    "    \n",
    "    xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "    \n",
    "    cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], nfold=cv_folds,\n",
    "    metrics='auc', early_stopping_rounds=early_stopping_rounds)\n",
    "        \n",
    "    # The optimal n_estimators\n",
    "    n_estimators = cvresult.shape[0]\n",
    "        \n",
    "    # Use the optimal n_estimators to train model\n",
    "    alg.set_params(n_estimators=n_estimators)\n",
    "    alg.fit(X_train, y_train, eval_metric='auc')\n",
    "        \n",
    "    # Predict training set:\n",
    "    train_predictions = alg.predict(X_train)\n",
    "    train_predprob = alg.predict_proba(X_train)[:,1]\n",
    "        \n",
    "    # Print model report:\n",
    "    print(\"\\nModel Report\")\n",
    "    print('Best n_estimator: %i' % n_estimators )\n",
    "    print(\"Accuracy : %.4g\" % metrics.accuracy_score(y_train, train_predictions)) \n",
    "    print(\"AUC Score (Train): %f\" % metrics.roc_auc_score(y_train, train_predprob)) \n",
    "                    \n",
    "    FeatureImportance = pd.Series(alg.get_booster().get_fscore()).sort_values(ascending=False)\n",
    "    FeatureImportance.plot(kind='bar', title='Feature Importances')\n",
    "    pyplot.ylabel('Feature Importance Score')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/Users/sddy9/anaconda3/lib/python3.6/site-packages/sklearn/preprocessing/label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.\n",
      "  if diff:\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model Report\n",
      "Best n_estimator: 142\n",
      "Accuracy : 0.9854\n",
      "AUC Score (Train): 0.878861\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "xgb1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=142,  \n",
    "        max_depth=4,\n",
    "        min_child_weight=2,\n",
    "        gamma=0,\n",
    "        subsample=0.75,\n",
    "        colsample_bytree=0.8,\n",
    "        reg_alpha=1e-5,\n",
    "        reg_lambda=1,\n",
    "        objective= 'binary:logistic',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb1, X_train, y_train)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "** The following optimal parameters obtained from all the previous tuning steps are: **\n",
    "    \n",
    "    * learning_rate =0.1,\n",
    "    \n",
    "    * n_estimators =142,\n",
    "    \n",
    "    * max_depth=4,\n",
    "    \n",
    "    * min_child_weight=2,\n",
    "    \n",
    "    * subsample=0.75,\n",
    "    \n",
    "    * colsample_bytree=0.8,\n",
    "    \n",
    "    * reg_alpha=1e-5,\n",
    "    \n",
    "    * reg_lambda=1.\n",
    "    \n",
    "** The parameter importance scores can be found from the plot above. **\n",
    "\n",
    "\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
